#pragma once

#include <iostream>



typedef		unsigned short	ushort;
typedef		unsigned int	uint;
typedef		unsigned char	byte;

#ifdef UNICODE
typedef		wchar_t				Char;
typedef		std::wstring		String;
typedef		std::wstringstream	sstream;
#else
typedef		char				Char;
typedef		std::string			String;
typedef		std::stringstream	sstream;
#endif

namespace core
{
	class Size
	{
	public:
		Size() : Width(0), Height(0){}

		Size(const Size& size)
		{
			Width = size.Width;
			Height = size.Height;
		}

		Size(uint width, uint height)
		{
			Width = width;
			Height = height;
		}

		Size operator+(const Size& sz) const
		{
			return Size(Width + sz.Width,
				Height + sz.Height);
		}

		Size operator-(const Size& sz) const
		{
			return Size(Width - sz.Width,
				Height - sz.Height);
		}

		bool operator==(const Size& sz) const
		{
			return (Width == sz.Width) && (Height == sz.Height);
		}

		bool Empty() const
		{
			return (Width == 0 && Height == 0);
		}

	public:
		uint Width;
		uint Height;
	};
}